// Strong directionality characters
// http://www.unicode.org/reports/tr9/#Bidirectional_Character_Types
const RIGHT_TO_LEFT = [
	// R:
	[ 0x5be, 0x5be ],
	[ 0x5c0, 0x5c0 ],
	[ 0x5c3, 0x5c3 ],
	[ 0x5c6, 0x5c6 ],
	[ 0x5d0, 0x5ea ],
	[ 0x5f0, 0x5f4 ],
	[ 0x7c0, 0x7ea ],
	[ 0x7f4, 0x7f5 ],
	[ 0x7fa, 0x7fa ],
	[ 0x800, 0x815 ],
	[ 0x81a, 0x81a ],
	[ 0x824, 0x824 ],
	[ 0x828, 0x828 ],
	[ 0x830, 0x83e ],
	[ 0x840, 0x858 ],
	[ 0x85e, 0x85e ],
	[ 0x200f, 0x200f ],
	[ 0xfb1d, 0xfb1d ],
	[ 0xfb1f, 0xfb28 ],
	[ 0xfb2a, 0xfb36 ],
	[ 0xfb38, 0xfb3c ],
	[ 0xfb3e, 0xfb3e ],
	[ 0xfb40, 0xfb41 ],
	[ 0xfb43, 0xfb44 ],
	[ 0xfb46, 0xfb4f ],
	[ 0x10800, 0x10805 ],
	[ 0x10808, 0x10808 ],
	[ 0x1080a, 0x10835 ],
	[ 0x10837, 0x10838 ],
	[ 0x1083c, 0x1083c ],
	[ 0x1083f, 0x10855 ],
	[ 0x10857, 0x1089e ],
	[ 0x108a7, 0x108af ],
	[ 0x108e0, 0x108f2 ],
	[ 0x108f4, 0x108f5 ],
	[ 0x108fb, 0x1091b ],
	[ 0x10920, 0x10939 ],
	[ 0x1093f, 0x1093f ],
	[ 0x10980, 0x109b7 ],
	[ 0x109bc, 0x109cf ],
	[ 0x109d2, 0x10a00 ],
	[ 0x10a10, 0x10a13 ],
	[ 0x10a15, 0x10a17 ],
	[ 0x10a19, 0x10a33 ],
	[ 0x10a40, 0x10a47 ],
	[ 0x10a50, 0x10a58 ],
	[ 0x10a60, 0x10a9f ],
	[ 0x10ac0, 0x10ae4 ],
	[ 0x10aeb, 0x10af6 ],
	[ 0x10b00, 0x10b35 ],
	[ 0x10b40, 0x10b55 ],
	[ 0x10b58, 0x10b72 ],
	[ 0x10b78, 0x10b91 ],
	[ 0x10b99, 0x10b9c ],
	[ 0x10ba9, 0x10baf ],
	[ 0x10c00, 0x10c48 ],
	[ 0x10c80, 0x10cb2 ],
	[ 0x10cc0, 0x10cf2 ],
	[ 0x10cfa, 0x10cff ],
	[ 0x1e800, 0x1e8c4 ],
	[ 0x1e8c7, 0x1e8cf ],
	[ 0x1e900, 0x1e943 ],
	[ 0x1e950, 0x1e959 ],
	[ 0x1e95e, 0x1e95f ],

	// AL:
	[ 0x608, 0x608 ],
	[ 0x60b, 0x60b ],
	[ 0x60d, 0x60d ],
	[ 0x61b, 0x61c ],
	[ 0x61e, 0x64a ],
	[ 0x66d, 0x66f ],
	[ 0x671, 0x6d5 ],
	[ 0x6e5, 0x6e6 ],
	[ 0x6ee, 0x6ef ],
	[ 0x6fa, 0x70d ],
	[ 0x70f, 0x710 ],
	[ 0x712, 0x72f ],
	[ 0x74d, 0x7a5 ],
	[ 0x7b1, 0x7b1 ],
	[ 0x8a0, 0x8b4 ],
	[ 0x8b6, 0x8bd ],
	[ 0xfb50, 0xfbc1 ],
	[ 0xfbd3, 0xfd3d ],
	[ 0xfd50, 0xfd8f ],
	[ 0xfd92, 0xfdc7 ],
	[ 0xfdf0, 0xfdfc ],
	[ 0xfe70, 0xfe74 ],
	[ 0xfe76, 0xfefc ],
	[ 0x1ee00, 0x1ee03 ],
	[ 0x1ee05, 0x1ee1f ],
	[ 0x1ee21, 0x1ee22 ],
	[ 0x1ee24, 0x1ee24 ],
	[ 0x1ee27, 0x1ee27 ],
	[ 0x1ee29, 0x1ee32 ],
	[ 0x1ee34, 0x1ee37 ],
	[ 0x1ee39, 0x1ee39 ],
	[ 0x1ee3b, 0x1ee3b ],
	[ 0x1ee42, 0x1ee42 ],
	[ 0x1ee47, 0x1ee47 ],
	[ 0x1ee49, 0x1ee49 ],
	[ 0x1ee4b, 0x1ee4b ],
	[ 0x1ee4d, 0x1ee4f ],
	[ 0x1ee51, 0x1ee52 ],
	[ 0x1ee54, 0x1ee54 ],
	[ 0x1ee57, 0x1ee57 ],
	[ 0x1ee59, 0x1ee59 ],
	[ 0x1ee5b, 0x1ee5b ],
	[ 0x1ee5d, 0x1ee5d ],
	[ 0x1ee5f, 0x1ee5f ],
	[ 0x1ee61, 0x1ee62 ],
	[ 0x1ee64, 0x1ee64 ],
	[ 0x1ee67, 0x1ee6a ],
	[ 0x1ee6c, 0x1ee72 ],
	[ 0x1ee74, 0x1ee77 ],
	[ 0x1ee79, 0x1ee7c ],
	[ 0x1ee7e, 0x1ee7e ],
	[ 0x1ee80, 0x1ee89 ],
	[ 0x1ee8b, 0x1ee9b ],
	[ 0x1eea1, 0x1eea3 ],
	[ 0x1eea5, 0x1eea9 ],
	[ 0x1eeab, 0x1eebb ],
];

const LEFT_TO_RIGHT = [
	[ 0x41, 0x5a ],
	[ 0x61, 0x7a ],
	[ 0xaa, 0xaa ],
	[ 0xb5, 0xb5 ],
	[ 0xba, 0xba ],
	[ 0xc0, 0xd6 ],
	[ 0xd8, 0xf6 ],
	[ 0xf8, 0x2b8 ],
	[ 0x2bb, 0x2c1 ],
	[ 0x2d0, 0x2d1 ],
	[ 0x2e0, 0x2e4 ],
	[ 0x2ee, 0x2ee ],
	[ 0x370, 0x373 ],
	[ 0x376, 0x377 ],
	[ 0x37a, 0x37d ],
	[ 0x37f, 0x37f ],
	[ 0x386, 0x386 ],
	[ 0x388, 0x38a ],
	[ 0x38c, 0x38c ],
	[ 0x38e, 0x3a1 ],
	[ 0x3a3, 0x3f5 ],
	[ 0x3f7, 0x482 ],
	[ 0x48a, 0x52f ],
	[ 0x531, 0x556 ],
	[ 0x559, 0x55f ],
	[ 0x561, 0x587 ],
	[ 0x589, 0x589 ],
	[ 0x903, 0x939 ],
	[ 0x93b, 0x93b ],
	[ 0x93d, 0x940 ],
	[ 0x949, 0x94c ],
	[ 0x94e, 0x950 ],
	[ 0x958, 0x961 ],
	[ 0x964, 0x980 ],
	[ 0x982, 0x983 ],
	[ 0x985, 0x98c ],
	[ 0x98f, 0x990 ],
	[ 0x993, 0x9a8 ],
	[ 0x9aa, 0x9b0 ],
	[ 0x9b2, 0x9b2 ],
	[ 0x9b6, 0x9b9 ],
	[ 0x9bd, 0x9c0 ],
	[ 0x9c7, 0x9c8 ],
	[ 0x9cb, 0x9cc ],
	[ 0x9ce, 0x9ce ],
	[ 0x9d7, 0x9d7 ],
	[ 0x9dc, 0x9dd ],
	[ 0x9df, 0x9e1 ],
	[ 0x9e6, 0x9f1 ],
	[ 0x9f4, 0x9fa ],
	[ 0xa03, 0xa03 ],
	[ 0xa05, 0xa0a ],
	[ 0xa0f, 0xa10 ],
	[ 0xa13, 0xa28 ],
	[ 0xa2a, 0xa30 ],
	[ 0xa32, 0xa33 ],
	[ 0xa35, 0xa36 ],
	[ 0xa38, 0xa39 ],
	[ 0xa3e, 0xa40 ],
	[ 0xa59, 0xa5c ],
	[ 0xa5e, 0xa5e ],
	[ 0xa66, 0xa6f ],
	[ 0xa72, 0xa74 ],
	[ 0xa83, 0xa83 ],
	[ 0xa85, 0xa8d ],
	[ 0xa8f, 0xa91 ],
	[ 0xa93, 0xaa8 ],
	[ 0xaaa, 0xab0 ],
	[ 0xab2, 0xab3 ],
	[ 0xab5, 0xab9 ],
	[ 0xabd, 0xac0 ],
	[ 0xac9, 0xac9 ],
	[ 0xacb, 0xacc ],
	[ 0xad0, 0xad0 ],
	[ 0xae0, 0xae1 ],
	[ 0xae6, 0xaf0 ],
	[ 0xaf9, 0xaf9 ],
	[ 0xb02, 0xb03 ],
	[ 0xb05, 0xb0c ],
	[ 0xb0f, 0xb10 ],
	[ 0xb13, 0xb28 ],
	[ 0xb2a, 0xb30 ],
	[ 0xb32, 0xb33 ],
	[ 0xb35, 0xb39 ],
	[ 0xb3d, 0xb3e ],
	[ 0xb40, 0xb40 ],
	[ 0xb47, 0xb48 ],
	[ 0xb4b, 0xb4c ],
	[ 0xb57, 0xb57 ],
	[ 0xb5c, 0xb5d ],
	[ 0xb5f, 0xb61 ],
	[ 0xb66, 0xb77 ],
	[ 0xb83, 0xb83 ],
	[ 0xb85, 0xb8a ],
	[ 0xb8e, 0xb90 ],
	[ 0xb92, 0xb95 ],
	[ 0xb99, 0xb9a ],
	[ 0xb9c, 0xb9c ],
	[ 0xb9e, 0xb9f ],
	[ 0xba3, 0xba4 ],
	[ 0xba8, 0xbaa ],
	[ 0xbae, 0xbb9 ],
	[ 0xbbe, 0xbbf ],
	[ 0xbc1, 0xbc2 ],
	[ 0xbc6, 0xbc8 ],
	[ 0xbca, 0xbcc ],
	[ 0xbd0, 0xbd0 ],
	[ 0xbd7, 0xbd7 ],
	[ 0xbe6, 0xbf2 ],
	[ 0xc01, 0xc03 ],
	[ 0xc05, 0xc0c ],
	[ 0xc0e, 0xc10 ],
	[ 0xc12, 0xc28 ],
	[ 0xc2a, 0xc39 ],
	[ 0xc3d, 0xc3d ],
	[ 0xc41, 0xc44 ],
	[ 0xc58, 0xc5a ],
	[ 0xc60, 0xc61 ],
	[ 0xc66, 0xc6f ],
	[ 0xc7f, 0xc80 ],
	[ 0xc82, 0xc83 ],
	[ 0xc85, 0xc8c ],
	[ 0xc8e, 0xc90 ],
	[ 0xc92, 0xca8 ],
	[ 0xcaa, 0xcb3 ],
	[ 0xcb5, 0xcb9 ],
	[ 0xcbd, 0xcc4 ],
	[ 0xcc6, 0xcc8 ],
	[ 0xcca, 0xccb ],
	[ 0xcd5, 0xcd6 ],
	[ 0xcde, 0xcde ],
	[ 0xce0, 0xce1 ],
	[ 0xce6, 0xcef ],
	[ 0xcf1, 0xcf2 ],
	[ 0xd02, 0xd03 ],
	[ 0xd05, 0xd0c ],
	[ 0xd0e, 0xd10 ],
	[ 0xd12, 0xd3a ],
	[ 0xd3d, 0xd40 ],
	[ 0xd46, 0xd48 ],
	[ 0xd4a, 0xd4c ],
	[ 0xd4e, 0xd4f ],
	[ 0xd54, 0xd61 ],
	[ 0xd66, 0xd7f ],
	[ 0xd82, 0xd83 ],
	[ 0xd85, 0xd96 ],
	[ 0xd9a, 0xdb1 ],
	[ 0xdb3, 0xdbb ],
	[ 0xdbd, 0xdbd ],
	[ 0xdc0, 0xdc6 ],
	[ 0xdcf, 0xdd1 ],
	[ 0xdd8, 0xddf ],
	[ 0xde6, 0xdef ],
	[ 0xdf2, 0xdf4 ],
	[ 0xe01, 0xe30 ],
	[ 0xe32, 0xe33 ],
	[ 0xe40, 0xe46 ],
	[ 0xe4f, 0xe5b ],
	[ 0xe81, 0xe82 ],
	[ 0xe84, 0xe84 ],
	[ 0xe87, 0xe88 ],
	[ 0xe8a, 0xe8a ],
	[ 0xe8d, 0xe8d ],
	[ 0xe94, 0xe97 ],
	[ 0xe99, 0xe9f ],
	[ 0xea1, 0xea3 ],
	[ 0xea5, 0xea5 ],
	[ 0xea7, 0xea7 ],
	[ 0xeaa, 0xeab ],
	[ 0xead, 0xeb0 ],
	[ 0xeb2, 0xeb3 ],
	[ 0xebd, 0xebd ],
	[ 0xec0, 0xec4 ],
	[ 0xec6, 0xec6 ],
	[ 0xed0, 0xed9 ],
	[ 0xedc, 0xedf ],
	[ 0xf00, 0xf17 ],
	[ 0xf1a, 0xf34 ],
	[ 0xf36, 0xf36 ],
	[ 0xf38, 0xf38 ],
	[ 0xf3e, 0xf47 ],
	[ 0xf49, 0xf6c ],
	[ 0xf7f, 0xf7f ],
	[ 0xf85, 0xf85 ],
	[ 0xf88, 0xf8c ],
	[ 0xfbe, 0xfc5 ],
	[ 0xfc7, 0xfcc ],
	[ 0xfce, 0xfda ],
	[ 0x1000, 0x102c ],
	[ 0x1031, 0x1031 ],
	[ 0x1038, 0x1038 ],
	[ 0x103b, 0x103c ],
	[ 0x103f, 0x1057 ],
	[ 0x105a, 0x105d ],
	[ 0x1061, 0x1070 ],
	[ 0x1075, 0x1081 ],
	[ 0x1083, 0x1084 ],
	[ 0x1087, 0x108c ],
	[ 0x108e, 0x109c ],
	[ 0x109e, 0x10c5 ],
	[ 0x10c7, 0x10c7 ],
	[ 0x10cd, 0x10cd ],
	[ 0x10d0, 0x1248 ],
	[ 0x124a, 0x124d ],
	[ 0x1250, 0x1256 ],
	[ 0x1258, 0x1258 ],
	[ 0x125a, 0x125d ],
	[ 0x1260, 0x1288 ],
	[ 0x128a, 0x128d ],
	[ 0x1290, 0x12b0 ],
	[ 0x12b2, 0x12b5 ],
	[ 0x12b8, 0x12be ],
	[ 0x12c0, 0x12c0 ],
	[ 0x12c2, 0x12c5 ],
	[ 0x12c8, 0x12d6 ],
	[ 0x12d8, 0x1310 ],
	[ 0x1312, 0x1315 ],
	[ 0x1318, 0x135a ],
	[ 0x1360, 0x137c ],
	[ 0x1380, 0x138f ],
	[ 0x13a0, 0x13f5 ],
	[ 0x13f8, 0x13fd ],
	[ 0x1401, 0x167f ],
	[ 0x1681, 0x169a ],
	[ 0x16a0, 0x16f8 ],
	[ 0x1700, 0x170c ],
	[ 0x170e, 0x1711 ],
	[ 0x1720, 0x1731 ],
	[ 0x1735, 0x1736 ],
	[ 0x1740, 0x1751 ],
	[ 0x1760, 0x176c ],
	[ 0x176e, 0x1770 ],
	[ 0x1780, 0x17b3 ],
	[ 0x17b6, 0x17b6 ],
	[ 0x17be, 0x17c5 ],
	[ 0x17c7, 0x17c8 ],
	[ 0x17d4, 0x17da ],
	[ 0x17dc, 0x17dc ],
	[ 0x17e0, 0x17e9 ],
	[ 0x1810, 0x1819 ],
	[ 0x1820, 0x1877 ],
	[ 0x1880, 0x1884 ],
	[ 0x1887, 0x18a8 ],
	[ 0x18aa, 0x18aa ],
	[ 0x18b0, 0x18f5 ],
	[ 0x1900, 0x191e ],
	[ 0x1923, 0x1926 ],
	[ 0x1929, 0x192b ],
	[ 0x1930, 0x1931 ],
	[ 0x1933, 0x1938 ],
	[ 0x1946, 0x196d ],
	[ 0x1970, 0x1974 ],
	[ 0x1980, 0x19ab ],
	[ 0x19b0, 0x19c9 ],
	[ 0x19d0, 0x19da ],
	[ 0x1a00, 0x1a16 ],
	[ 0x1a19, 0x1a1a ],
	[ 0x1a1e, 0x1a55 ],
	[ 0x1a57, 0x1a57 ],
	[ 0x1a61, 0x1a61 ],
	[ 0x1a63, 0x1a64 ],
	[ 0x1a6d, 0x1a72 ],
	[ 0x1a80, 0x1a89 ],
	[ 0x1a90, 0x1a99 ],
	[ 0x1aa0, 0x1aad ],
	[ 0x1b04, 0x1b33 ],
	[ 0x1b35, 0x1b35 ],
	[ 0x1b3b, 0x1b3b ],
	[ 0x1b3d, 0x1b41 ],
	[ 0x1b43, 0x1b4b ],
	[ 0x1b50, 0x1b6a ],
	[ 0x1b74, 0x1b7c ],
	[ 0x1b82, 0x1ba1 ],
	[ 0x1ba6, 0x1ba7 ],
	[ 0x1baa, 0x1baa ],
	[ 0x1bae, 0x1be5 ],
	[ 0x1be7, 0x1be7 ],
	[ 0x1bea, 0x1bec ],
	[ 0x1bee, 0x1bee ],
	[ 0x1bf2, 0x1bf3 ],
	[ 0x1bfc, 0x1c2b ],
	[ 0x1c34, 0x1c35 ],
	[ 0x1c3b, 0x1c49 ],
	[ 0x1c4d, 0x1c88 ],
	[ 0x1cc0, 0x1cc7 ],
	[ 0x1cd3, 0x1cd3 ],
	[ 0x1ce1, 0x1ce1 ],
	[ 0x1ce9, 0x1cec ],
	[ 0x1cee, 0x1cf3 ],
	[ 0x1cf5, 0x1cf6 ],
	[ 0x1d00, 0x1dbf ],
	[ 0x1e00, 0x1f15 ],
	[ 0x1f18, 0x1f1d ],
	[ 0x1f20, 0x1f45 ],
	[ 0x1f48, 0x1f4d ],
	[ 0x1f50, 0x1f57 ],
	[ 0x1f59, 0x1f59 ],
	[ 0x1f5b, 0x1f5b ],
	[ 0x1f5d, 0x1f5d ],
	[ 0x1f5f, 0x1f7d ],
	[ 0x1f80, 0x1fb4 ],
	[ 0x1fb6, 0x1fbc ],
	[ 0x1fbe, 0x1fbe ],
	[ 0x1fc2, 0x1fc4 ],
	[ 0x1fc6, 0x1fcc ],
	[ 0x1fd0, 0x1fd3 ],
	[ 0x1fd6, 0x1fdb ],
	[ 0x1fe0, 0x1fec ],
	[ 0x1ff2, 0x1ff4 ],
	[ 0x1ff6, 0x1ffc ],
	[ 0x200e, 0x200e ],
	[ 0x2071, 0x2071 ],
	[ 0x207f, 0x207f ],
	[ 0x2090, 0x209c ],
	[ 0x2102, 0x2102 ],
	[ 0x2107, 0x2107 ],
	[ 0x210a, 0x2113 ],
	[ 0x2115, 0x2115 ],
	[ 0x2119, 0x211d ],
	[ 0x2124, 0x2124 ],
	[ 0x2126, 0x2126 ],
	[ 0x2128, 0x2128 ],
	[ 0x212a, 0x212d ],
	[ 0x212f, 0x2139 ],
	[ 0x213c, 0x213f ],
	[ 0x2145, 0x2149 ],
	[ 0x214e, 0x214f ],
	[ 0x2160, 0x2188 ],
	[ 0x2336, 0x237a ],
	[ 0x2395, 0x2395 ],
	[ 0x249c, 0x24e9 ],
	[ 0x26ac, 0x26ac ],
	[ 0x2800, 0x28ff ],
	[ 0x2c00, 0x2c2e ],
	[ 0x2c30, 0x2c5e ],
	[ 0x2c60, 0x2ce4 ],
	[ 0x2ceb, 0x2cee ],
	[ 0x2cf2, 0x2cf3 ],
	[ 0x2d00, 0x2d25 ],
	[ 0x2d27, 0x2d27 ],
	[ 0x2d2d, 0x2d2d ],
	[ 0x2d30, 0x2d67 ],
	[ 0x2d6f, 0x2d70 ],
	[ 0x2d80, 0x2d96 ],
	[ 0x2da0, 0x2da6 ],
	[ 0x2da8, 0x2dae ],
	[ 0x2db0, 0x2db6 ],
	[ 0x2db8, 0x2dbe ],
	[ 0x2dc0, 0x2dc6 ],
	[ 0x2dc8, 0x2dce ],
	[ 0x2dd0, 0x2dd6 ],
	[ 0x2dd8, 0x2dde ],
	[ 0x3005, 0x3007 ],
	[ 0x3021, 0x3029 ],
	[ 0x302e, 0x302f ],
	[ 0x3031, 0x3035 ],
	[ 0x3038, 0x303c ],
	[ 0x3041, 0x3096 ],
	[ 0x309d, 0x309f ],
	[ 0x30a1, 0x30fa ],
	[ 0x30fc, 0x30ff ],
	[ 0x3105, 0x312d ],
	[ 0x3131, 0x318e ],
	[ 0x3190, 0x31ba ],
	[ 0x31f0, 0x321c ],
	[ 0x3220, 0x324f ],
	[ 0x3260, 0x327b ],
	[ 0x327f, 0x32b0 ],
	[ 0x32c0, 0x32cb ],
	[ 0x32d0, 0x32fe ],
	[ 0x3300, 0x3376 ],
	[ 0x337b, 0x33dd ],
	[ 0x33e0, 0x33fe ],
	[ 0x3400, 0x3400 ],
	[ 0x4db5, 0x4db5 ],
	[ 0x4e00, 0x4e00 ],
	[ 0x9fd5, 0x9fd5 ],
	[ 0xa000, 0xa48c ],
	[ 0xa4d0, 0xa60c ],
	[ 0xa610, 0xa62b ],
	[ 0xa640, 0xa66e ],
	[ 0xa680, 0xa69d ],
	[ 0xa6a0, 0xa6ef ],
	[ 0xa6f2, 0xa6f7 ],
	[ 0xa722, 0xa787 ],
	[ 0xa789, 0xa7ae ],
	[ 0xa7b0, 0xa7b7 ],
	[ 0xa7f7, 0xa801 ],
	[ 0xa803, 0xa805 ],
	[ 0xa807, 0xa80a ],
	[ 0xa80c, 0xa824 ],
	[ 0xa827, 0xa827 ],
	[ 0xa830, 0xa837 ],
	[ 0xa840, 0xa873 ],
	[ 0xa880, 0xa8c3 ],
	[ 0xa8ce, 0xa8d9 ],
	[ 0xa8f2, 0xa8fd ],
	[ 0xa900, 0xa925 ],
	[ 0xa92e, 0xa946 ],
	[ 0xa952, 0xa953 ],
	[ 0xa95f, 0xa97c ],
	[ 0xa983, 0xa9b2 ],
	[ 0xa9b4, 0xa9b5 ],
	[ 0xa9ba, 0xa9bb ],
	[ 0xa9bd, 0xa9cd ],
	[ 0xa9cf, 0xa9d9 ],
	[ 0xa9de, 0xa9e4 ],
	[ 0xa9e6, 0xa9fe ],
	[ 0xaa00, 0xaa28 ],
	[ 0xaa2f, 0xaa30 ],
	[ 0xaa33, 0xaa34 ],
	[ 0xaa40, 0xaa42 ],
	[ 0xaa44, 0xaa4b ],
	[ 0xaa4d, 0xaa4d ],
	[ 0xaa50, 0xaa59 ],
	[ 0xaa5c, 0xaa7b ],
	[ 0xaa7d, 0xaaaf ],
	[ 0xaab1, 0xaab1 ],
	[ 0xaab5, 0xaab6 ],
	[ 0xaab9, 0xaabd ],
	[ 0xaac0, 0xaac0 ],
	[ 0xaac2, 0xaac2 ],
	[ 0xaadb, 0xaaeb ],
	[ 0xaaee, 0xaaf5 ],
	[ 0xab01, 0xab06 ],
	[ 0xab09, 0xab0e ],
	[ 0xab11, 0xab16 ],
	[ 0xab20, 0xab26 ],
	[ 0xab28, 0xab2e ],
	[ 0xab30, 0xab65 ],
	[ 0xab70, 0xabe4 ],
	[ 0xabe6, 0xabe7 ],
	[ 0xabe9, 0xabec ],
	[ 0xabf0, 0xabf9 ],
	[ 0xac00, 0xac00 ],
	[ 0xd7a3, 0xd7a3 ],
	[ 0xd7b0, 0xd7c6 ],
	[ 0xd7cb, 0xd7fb ],
	[ 0xd800, 0xd800 ],
	[ 0xdb7f, 0xdb80 ],
	[ 0xdbff, 0xdc00 ],
	[ 0xdfff, 0xe000 ],
	[ 0xf8ff, 0xfa6d ],
	[ 0xfa70, 0xfad9 ],
	[ 0xfb00, 0xfb06 ],
	[ 0xfb13, 0xfb17 ],
	[ 0xff21, 0xff3a ],
	[ 0xff41, 0xff5a ],
	[ 0xff66, 0xffbe ],
	[ 0xffc2, 0xffc7 ],
	[ 0xffca, 0xffcf ],
	[ 0xffd2, 0xffd7 ],
	[ 0xffda, 0xffdc ],
	[ 0x10000, 0x1000b ],
	[ 0x1000d, 0x10026 ],
	[ 0x10028, 0x1003a ],
	[ 0x1003c, 0x1003d ],
	[ 0x1003f, 0x1004d ],
	[ 0x10050, 0x1005d ],
	[ 0x10080, 0x100fa ],
	[ 0x10100, 0x10100 ],
	[ 0x10102, 0x10102 ],
	[ 0x10107, 0x10133 ],
	[ 0x10137, 0x1013f ],
	[ 0x1018d, 0x1018e ],
	[ 0x101d0, 0x101fc ],
	[ 0x10280, 0x1029c ],
	[ 0x102a0, 0x102d0 ],
	[ 0x10300, 0x10323 ],
	[ 0x10330, 0x1034a ],
	[ 0x10350, 0x10375 ],
	[ 0x10380, 0x1039d ],
	[ 0x1039f, 0x103c3 ],
	[ 0x103c8, 0x103d5 ],
	[ 0x10400, 0x1049d ],
	[ 0x104a0, 0x104a9 ],
	[ 0x104b0, 0x104d3 ],
	[ 0x104d8, 0x104fb ],
	[ 0x10500, 0x10527 ],
	[ 0x10530, 0x10563 ],
	[ 0x1056f, 0x1056f ],
	[ 0x10600, 0x10736 ],
	[ 0x10740, 0x10755 ],
	[ 0x10760, 0x10767 ],
	[ 0x11000, 0x11000 ],
	[ 0x11002, 0x11037 ],
	[ 0x11047, 0x1104d ],
	[ 0x11066, 0x1106f ],
	[ 0x11082, 0x110b2 ],
	[ 0x110b7, 0x110b8 ],
	[ 0x110bb, 0x110c1 ],
	[ 0x110d0, 0x110e8 ],
	[ 0x110f0, 0x110f9 ],
	[ 0x11103, 0x11126 ],
	[ 0x1112c, 0x1112c ],
	[ 0x11136, 0x11143 ],
	[ 0x11150, 0x11172 ],
	[ 0x11174, 0x11176 ],
	[ 0x11182, 0x111b5 ],
	[ 0x111bf, 0x111c9 ],
	[ 0x111cd, 0x111cd ],
	[ 0x111d0, 0x111df ],
	[ 0x111e1, 0x111f4 ],
	[ 0x11200, 0x11211 ],
	[ 0x11213, 0x1122e ],
	[ 0x11232, 0x11233 ],
	[ 0x11235, 0x11235 ],
	[ 0x11238, 0x1123d ],
	[ 0x11280, 0x11286 ],
	[ 0x11288, 0x11288 ],
	[ 0x1128a, 0x1128d ],
	[ 0x1128f, 0x1129d ],
	[ 0x1129f, 0x112a9 ],
	[ 0x112b0, 0x112de ],
	[ 0x112e0, 0x112e2 ],
	[ 0x112f0, 0x112f9 ],
	[ 0x11302, 0x11303 ],
	[ 0x11305, 0x1130c ],
	[ 0x1130f, 0x11310 ],
	[ 0x11313, 0x11328 ],
	[ 0x1132a, 0x11330 ],
	[ 0x11332, 0x11333 ],
	[ 0x11335, 0x11339 ],
	[ 0x1133d, 0x1133f ],
	[ 0x11341, 0x11344 ],
	[ 0x11347, 0x11348 ],
	[ 0x1134b, 0x1134d ],
	[ 0x11350, 0x11350 ],
	[ 0x11357, 0x11357 ],
	[ 0x1135d, 0x11363 ],
	[ 0x11400, 0x11437 ],
	[ 0x11440, 0x11441 ],
	[ 0x11445, 0x11445 ],
	[ 0x11447, 0x11459 ],
	[ 0x1145b, 0x1145b ],
	[ 0x1145d, 0x1145d ],
	[ 0x11480, 0x114b2 ],
	[ 0x114b9, 0x114b9 ],
	[ 0x114bb, 0x114be ],
	[ 0x114c1, 0x114c1 ],
	[ 0x114c4, 0x114c7 ],
	[ 0x114d0, 0x114d9 ],
	[ 0x11580, 0x115b1 ],
	[ 0x115b8, 0x115bb ],
	[ 0x115be, 0x115be ],
	[ 0x115c1, 0x115db ],
	[ 0x11600, 0x11632 ],
	[ 0x1163b, 0x1163c ],
	[ 0x1163e, 0x1163e ],
	[ 0x11641, 0x11644 ],
	[ 0x11650, 0x11659 ],
	[ 0x11680, 0x116aa ],
	[ 0x116ac, 0x116ac ],
	[ 0x116ae, 0x116af ],
	[ 0x116b6, 0x116b6 ],
	[ 0x116c0, 0x116c9 ],
	[ 0x11700, 0x11719 ],
	[ 0x11720, 0x11721 ],
	[ 0x11726, 0x11726 ],
	[ 0x11730, 0x1173f ],
	[ 0x118a0, 0x118f2 ],
	[ 0x118ff, 0x118ff ],
	[ 0x11ac0, 0x11af8 ],
	[ 0x11c00, 0x11c08 ],
	[ 0x11c0a, 0x11c2f ],
	[ 0x11c3e, 0x11c45 ],
	[ 0x11c50, 0x11c6c ],
	[ 0x11c70, 0x11c8f ],
	[ 0x11ca9, 0x11ca9 ],
	[ 0x11cb1, 0x11cb1 ],
	[ 0x11cb4, 0x11cb4 ],
	[ 0x12000, 0x12399 ],
	[ 0x12400, 0x1246e ],
	[ 0x12470, 0x12474 ],
	[ 0x12480, 0x12543 ],
	[ 0x13000, 0x1342e ],
	[ 0x14400, 0x14646 ],
	[ 0x16800, 0x16a38 ],
	[ 0x16a40, 0x16a5e ],
	[ 0x16a60, 0x16a69 ],
	[ 0x16a6e, 0x16a6f ],
	[ 0x16ad0, 0x16aed ],
	[ 0x16af5, 0x16af5 ],
	[ 0x16b00, 0x16b2f ],
	[ 0x16b37, 0x16b45 ],
	[ 0x16b50, 0x16b59 ],
	[ 0x16b5b, 0x16b61 ],
	[ 0x16b63, 0x16b77 ],
	[ 0x16b7d, 0x16b8f ],
	[ 0x16f00, 0x16f44 ],
	[ 0x16f50, 0x16f7e ],
	[ 0x16f93, 0x16f9f ],
	[ 0x16fe0, 0x16fe0 ],
	[ 0x17000, 0x17000 ],
	[ 0x187ec, 0x187ec ],
	[ 0x18800, 0x18af2 ],
	[ 0x1b000, 0x1b001 ],
	[ 0x1bc00, 0x1bc6a ],
	[ 0x1bc70, 0x1bc7c ],
	[ 0x1bc80, 0x1bc88 ],
	[ 0x1bc90, 0x1bc99 ],
	[ 0x1bc9c, 0x1bc9c ],
	[ 0x1bc9f, 0x1bc9f ],
	[ 0x1d000, 0x1d0f5 ],
	[ 0x1d100, 0x1d126 ],
	[ 0x1d129, 0x1d166 ],
	[ 0x1d16a, 0x1d172 ],
	[ 0x1d183, 0x1d184 ],
	[ 0x1d18c, 0x1d1a9 ],
	[ 0x1d1ae, 0x1d1e8 ],
	[ 0x1d360, 0x1d371 ],
	[ 0x1d400, 0x1d454 ],
	[ 0x1d456, 0x1d49c ],
	[ 0x1d49e, 0x1d49f ],
	[ 0x1d4a2, 0x1d4a2 ],
	[ 0x1d4a5, 0x1d4a6 ],
	[ 0x1d4a9, 0x1d4ac ],
	[ 0x1d4ae, 0x1d4b9 ],
	[ 0x1d4bb, 0x1d4bb ],
	[ 0x1d4bd, 0x1d4c3 ],
	[ 0x1d4c5, 0x1d505 ],
	[ 0x1d507, 0x1d50a ],
	[ 0x1d50d, 0x1d514 ],
	[ 0x1d516, 0x1d51c ],
	[ 0x1d51e, 0x1d539 ],
	[ 0x1d53b, 0x1d53e ],
	[ 0x1d540, 0x1d544 ],
	[ 0x1d546, 0x1d546 ],
	[ 0x1d54a, 0x1d550 ],
	[ 0x1d552, 0x1d6a5 ],
	[ 0x1d6a8, 0x1d6da ],
	[ 0x1d6dc, 0x1d714 ],
	[ 0x1d716, 0x1d74e ],
	[ 0x1d750, 0x1d788 ],
	[ 0x1d78a, 0x1d7c2 ],
	[ 0x1d7c4, 0x1d7cb ],
	[ 0x1d800, 0x1d9ff ],
	[ 0x1da37, 0x1da3a ],
	[ 0x1da6d, 0x1da74 ],
	[ 0x1da76, 0x1da83 ],
	[ 0x1da85, 0x1da8b ],
	[ 0x1f110, 0x1f12e ],
	[ 0x1f130, 0x1f169 ],
	[ 0x1f170, 0x1f1ac ],
	[ 0x1f1e6, 0x1f202 ],
	[ 0x1f210, 0x1f23b ],
	[ 0x1f240, 0x1f248 ],
	[ 0x1f250, 0x1f251 ],
	[ 0x20000, 0x20000 ],
	[ 0x2a6d6, 0x2a6d6 ],
	[ 0x2a700, 0x2a700 ],
	[ 0x2b734, 0x2b734 ],
	[ 0x2b740, 0x2b740 ],
	[ 0x2b81d, 0x2b81d ],
	[ 0x2b820, 0x2b820 ],
	[ 0x2cea1, 0x2cea1 ],
	[ 0x2f800, 0x2fa1d ],
	[ 0xf0000, 0xf0000 ],
	[ 0xffffd, 0xffffd ],
	[ 0x100000, 0x100000 ],
	[ 0x10fffd, 0x10fffd ],
];

const createLookUpMap = charactersRangeArray => {
	const set = new Set();

	charactersRangeArray.forEach( range => {
		for ( let i = range[ 0 ]; i <= range[ 1 ]; i++ ) {
			set.add( i );
		}
	} );

	return set;
};

const RTL_SET = createLookUpMap( RIGHT_TO_LEFT );
const LTR_SET = createLookUpMap( LEFT_TO_RIGHT );

export const isRTLCharacter = character => RTL_SET.has( character.charCodeAt( 0 ) );
export const isLTRCharacter = character => LTR_SET.has( character.charCodeAt( 0 ) );
